package com.btm.service;

import com.btm.entity.Organization;
import com.btm.mapper.OrganizationMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;

import java.util.List;

/**
 * 机构信息服务类
 */
@Service
public class OrganizationService {
    
    @Autowired
    private OrganizationMapper organizationMapper;

    /**
     * 根据机构ID查询机构信息
     *
     * @param orgId 机构ID
     * @return 机构信息列表
     */
    public Organization findByOrgId(Long orgId) {
        return organizationMapper.selectById(orgId);
    }
    
    /**
     * 根据机构名称查询机构信息，先进行精准查询，若查询不到再进行模糊查询
     * 
     * @param name 机构名称
     * @return 机构信息列表
     */
    public List<Organization> findByName(String name) {
        List<Organization> accurateOrg = organizationMapper.findByAccurateName(name);
        if (CollectionUtils.isEmpty(accurateOrg)) {
            return organizationMapper.findByName(name);
        } else {
            return accurateOrg;
        }
    }
    
    /**
     * 根据机构ID查询其直接下级机构
     * 
     * @param parentId 上级机构ID
     * @return 下级机构信息列表
     */
    public List<Organization> findByParentId(Integer parentId) {
        return organizationMapper.selectByParentId(parentId);
    }
    
    /**
     * 根据多个机构ID查询其直接下级机构
     * 
     * @param parentIds 上级机构ID列表
     * @return 下级机构信息列表
     */
    public List<Organization> findByParentIds(List<Integer> parentIds) {
        if (parentIds == null || parentIds.isEmpty()) {
            return List.of();
        }
        return organizationMapper.selectByParentIds(parentIds);
    }
}